部署 OpenCV
1.更新源
sudo apt-get update
2.安装相关依赖
sudo apt-get install python3 python3-pip python3-dev python3-numpy
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install cmake git pkg-config
3.克隆 OpenCV
git clone https://github.com/opencv/opencv.git
4.部署 OpenCV
方法1:安装 OpenCV 的预编译版本
预编译版本通常会落后于 pip 和 github 的一个版本
sudo apt-get install libopencv-dev python3-opencv
方法2:通过 pip 安装 OpenCV
同时安装基础版和完整版会因命名而冲突,只能二选一安装
若已安装其中一个,需先卸载
pip uninstall opencv-python opencv-contrib-python
基础版(仅核心模块)
带基础功能(如基础图像处理、视频操作等)
pip install opencv-python
如果上面的命令报错,在末尾加上 --break-system-packages 再尝试
pip install opencv-python --break-system-packages
完整版(包含额外模块如 contrib、repository)
需要高级功能(如深度学习模型部署、人脸识别等)
pip install opencv-contrib-python --break-system-packages
方法3:从源代码编译安装
克隆 contrib
git clone https://github.com/opencv/opencv_contrib.git
创建一个构建目录
cd opencv
mkdir build
cd build
运行 cmake 配置
这一步比较慢
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON \ -D WITH_FFMPEG=ON \ -D WITH_CUDA=OFF \ -D PYTHON3_EXECUTABLE=$(which python3) \ -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \ -D PYTHON3_LIBRARY=$(python3 -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))") \ -D PYTHON3_NUMPY_INCLUDE_DIRS=$(python3 -c "import numpy; print(numpy.get_include())") ..
参数说明:
编译和安装
这一步非常慢
make -j$(nproc)
安装编译内容
sudo make install
更新动态链接器缓存
sudo ldconfig
返回用户目录
cd ~/
5.验证安装
如果没有返回错误,并且输出了 OpenCV 的版本号,这表示安装成功
python3 -c "import cv2; print(cv2.__version__)"
示例
在 opencv/samples/python 下已有一些示例
我们也可以尝试自己写
进入 opencv 目录
cd opencv
示例1:调用摄像头,并生成窗口实时预览
新建 Camera-Preview.py
sudo nano Camera-Preview.py
并添加以下内容
# 实时捕获摄像头 import numpy as np import cv2 # 打开编号 0 的摄像头 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() frame = cv2.flip(frame, 1) # -1 垂直翻转摄像头 # 彩色视频 cv2.imshow('frame', frame) # 黑白视频 # gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # cv2.imshow('gray', gray) k = cv2.waitKey(30) & 0xff if k == 27: break # 按 ESC 结束 cap.release() cv2.destroyAllWindows()
按 Ctrl+O 保存,按 Ctrl+X 关闭
使用 Python3 运行 Camera-Preview.py
python3 Camera-Preview.py
可以看到新窗口中能实时预览摄像头
示例2:实时检测人脸
新建 FaceDetection.py
sudo nano FaceDetection.py
并添加以下内容
# 实时捕获摄像头并检测人脸 import numpy as np import cv2 # 加载人脸检测的 Haar 级联分类器 face_cascade = cv2.CascadeClassifier('data/haarcascades/haarcascade_frontalface_default.xml') # 打开编号 0 的摄像头 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() frame = cv2.flip(frame, 1) # -1 垂直翻转摄像头 # 检测人脸 faces = face_cascade.detectMultiScale(frame, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) # 在检测到的人脸周围绘制矩形框 for (x, y, w, h) in faces: cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 3) # 显示结果图像 cv2.imshow('frame', frame) k = cv2.waitKey(30) & 0xff if k == 27: break # 按 ESC 结束 cap.release() cv2.destroyAllWindows()
按 Ctrl+O 保存,按 Ctrl+X 关闭
使用 Python3 运行 FaceDetection.py
python3 FaceDetection.py
当检测到人脸后,会在周围绘制矩形框